where the capability value is not initialized thus we may
get random value.
Signed-off-by: Xin, Xiaohui<xiaohui.xin@intel.com>
int acpi_dmar_init(void)
{
int rc;
- struct acpi_drhd_unit *drhd;
- struct iommu *iommu;
rc = -ENODEV;
if ( force_iommu )
if ( list_empty(&acpi_drhd_units) )
goto fail;
- /* Giving that all devices within guest use same io page table,
- * enable snoop control only if all VT-d engines support it.
- */
- if ( iommu_snoop )
- {
- for_each_drhd_unit ( drhd )
- {
- iommu = drhd->iommu;
- if ( !ecap_snp_ctl(iommu->ecap) ) {
- iommu_snoop = 0;
- break;
- }
- }
- }
-
- printk("Intel VT-d has been enabled, snoop_control=%d.\n", iommu_snoop);
+ printk("Intel VT-d has been enabled\n");
return 0;
if ( init_vtd_hw() )
goto error;
+ /* Giving that all devices within guest use same io page table,
+ * enable snoop control only if all VT-d engines support it.
+ */
+
+ if ( iommu_snoop )
+ {
+ for_each_drhd_unit ( drhd )
+ {
+ iommu = drhd->iommu;
+ if ( !ecap_snp_ctl(iommu->ecap) ) {
+ iommu_snoop = 0;
+ break;
+ }
+ }
+ }
+
+ printk("Intel VT-d snoop control %sabled\n", iommu_snoop ? "en" : "dis");
register_keyhandler('V', dump_iommu_info, "dump iommu info");
return 0;
for_each_drhd_unit ( drhd )
iommu_free(drhd);
vtd_enabled = 0;
+ iommu_snoop = 0;
return -ENOMEM;
}